home *** CD-ROM | disk | FTP | other *** search
/ Aminet 31 / Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso / Aminet / dev / c / ctags.lha / ctags-3.0.3 / Makefile.maint < prev    next >
Makefile  |  1999-02-17  |  8KB  |  304 lines

  1. #*****************************************************************************
  2. #    $Id: Makefile.maint,v 7.4 1998/12/21 05:58:03 darren Exp darren $
  3. #
  4. #   Development makefile for Exuberant Ctags, used to build releases.
  5. #
  6. #    Copyright (c) 1996-1998, Darren Hiebert
  7. #*****************************************************************************
  8.  
  9. SOURCES        =    eiffel.c entry.c fortran.c get.c keyword.c main.c options.c \
  10.                 parse.c read.c sort.c vstring.c
  11. DSOURCES    =    $(SOURCES) debug.c 
  12. HEADERS        =    ctags.h debug.h entry.h general.h get.h keyword.h main.h \
  13.                 options.h parse.h read.h sort.h vstring.h
  14.  
  15. VERSION_FILES=    ctags.h ctags.1 ctags.lsm NEWS
  16.  
  17. DIST_FILES    =    COPYING FAQ INSTALL INSTALL.DOS QUOTES README \
  18.                 Makefile.in configure.in acconfig.h mkinstalldirs \
  19.                 Makefile.amiga Makefile.bcc Makefile.djg Makefile.maint \
  20.                 Makefile.os2 Makefile.w32 descrip.mms \
  21.                 $(DSOURCES) strstr.c $(HEADERS) ctags.1 ctags.lsm NEWS
  22.  
  23. DOS_FILES    =    COPYING FAQ INSTALL.DOS QUOTES README \
  24.                 Makefile.amiga Makefile.bcc Makefile.djg \
  25.                 Makefile.os2 Makefile.w32 \
  26.                 $(DSOURCES) $(HEADERS)
  27.  
  28. RCS_FILES    =    $(DIST_FILES) ctags.spec
  29.  
  30. WARNINGS    =    -Wall -W -Wtraditional -Wpointer-arith -Wcast-align \
  31.                 -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations \
  32.                 -Wnested-externs -Wcast-qual -Wshadow \
  33.                 -pedantic -Wstrict-prototypes # -Wconversion -Werror 
  34.  
  35. ERRFILE    = errors
  36. REDIR     = 2>&1 | tee $(ERRFILE)
  37.  
  38. RPM_ROOT= $(HOME)/Develop
  39. CTAGS_DOSDIR = /mnt/dos/ctags
  40. WEB_ARCHIVE_DIR = $(HOME)/public_html/archives
  41. DEP_DIR    = .deps
  42.  
  43. CC        = egcs
  44. DEFS    = -I. -DHAVE_CONFIG_H
  45. CFLAGS    = $(DEFS)
  46. OPT        = -O3
  47. DCFLAGS    = $(CFLAGS) -DDEBUG -DINTERNAL_SORT
  48. DLFLAGS    = -lefence
  49. LD        = gcc
  50.  
  51. AUTO_GEN    = configure config.h.in
  52. CONFIG_GEN    = config.cache config.log config.status config.run config.h Makefile
  53. PROF_GEN    = gmon.out
  54. COV_GEN        = *.da *.gcov
  55.  
  56. #
  57. # Targets
  58. #
  59. ifeq ($(findstring clean,$(MAKECMDGOALS)),)
  60. ifneq ($(MAKECMDGOALS),setup)
  61. ifeq ($(wildcard config.h),)
  62. ctags dctags ctags.prof ctags.cov:
  63.     $(MAKE) config.h
  64.     $(MAKE) $(MAKECMDGOALS)
  65. else
  66. all: ctags dctags tags syntax.vim
  67.  
  68. include $(DSOURCES:%.c=$(DEP_DIR)/%.d)
  69.  
  70. #
  71. # Executable targets
  72. #
  73. ctags: $(SOURCES:.c=.o)
  74.     @ echo "-- Linking $@"
  75.     @ $(LD) $(LFLAGS) $^ -o $@
  76.  
  77. dctags: $(SOURCES:.c=.od) debug.od
  78.     @ echo "-- Building $@"
  79.     @ $(LD) $(LFLAGS) $^ -o $@
  80.  
  81. ctags.prof: $(SOURCES) $(HEADERS) Makefile
  82.     $(CC) -pg $(CFLAGS) $(WARNINGS) $(SOURCES) -o $@
  83.  
  84. ctags.cov: $(SOURCES) $(HEADERS) Makefile
  85.     $(CC) -fprofile-arcs -ftest-coverage $(CFLAGS) $(WARNINGS) $(SOURCES) -o $@
  86.  
  87. gcov: $(SOURCES:.c=.c.gcov)
  88.  
  89. endif
  90. endif
  91. endif
  92.  
  93. ctags32.exe: $(SOURCES) $(HEADERS)
  94.     gcc-dos -DMSDOS -O4 -Wall -s -o $@ $(SOURCES)
  95.  
  96. #
  97. # Support targets
  98. #
  99. FORCE:
  100.  
  101. config.h.in: acconfig.h configure.in
  102.     autoheader
  103.     @ touch $@
  104.  
  105. configure: configure.in
  106.     autoconf
  107.  
  108. config.h: config.h.in configure
  109.     ./configure --enable-maintainer-mode
  110.     @ touch $@
  111.  
  112. depclean:
  113.     rm -f $(DEP_DIR)/*.d 
  114.  
  115. profclean:
  116.     rm -f $(PROF_GEN)
  117.  
  118. gcovclean:
  119.     rm -f $(COV_GEN)
  120.  
  121. clean: depclean profclean gcovclean
  122.     rm -f *.[oi] ctags dctags ctags*.exe ctags.man \
  123.           ctags.prof ctags.cov *.bb *.bbg tags TAGS syntax.vim $(ERRFILE)
  124.  
  125. distclean: clean
  126.     rm -f $(CONFIG_GEN)
  127.  
  128. maintainer-clean maintclean: distclean
  129.     rm -f $(AUTO_GEN)
  130.  
  131. ctags.man: ctags.1
  132.     @ groff -Tascii -mandoc $< | sed 's/.//g' > $@
  133.  
  134. tags: $(DSOURCES) $(HEADERS)
  135.     @ echo "-- Building tag file"
  136.     @ ctags $^
  137.  
  138. #
  139. # Create a Vim syntax file for all typedefs
  140. #
  141. syntax: syntax.vim
  142. syntax.vim: $(DSOURCES) $(HEADERS)
  143.     @ echo "-- Generating syntax file"
  144.     @ ctags -i=ctS -o- $^ |\
  145.         awk 'BEGIN{printf("syntax keyword Typedef\t")}\
  146.                 {printf("%s ", $$1)}END{print ""}' > $@
  147.  
  148. #
  149. # RCS management
  150. #
  151. co:
  152.     -@ (cd RCS; rlog -L -R * | sed -e 's/,v$$//')
  153.  
  154. checkin:
  155.     @ ci -u `rlog -L -R RCS/* | sed -e 's:RCS/::' -e 's/,v$$//'`
  156.  
  157. rcs-release:
  158.     -co -l $(RCS_FILES)
  159.     ci -u -f7.1 -n"V3_0" -m"Formal release of 3.0" $(RCS_FILES)
  160.  
  161. rcs-files:
  162.     @ls -1 $(RCS_FILES)
  163.  
  164. #
  165. # Release management
  166. #
  167. ctags-%.tar.gz: $(DIST_FILES) $(VERSION_FILES)
  168.     @ echo "---------- Building tar ball"
  169.     if [ -d ctags-$* ] ;then rm -fr ctags-$** ;fi
  170.     mkdir ctags-$*
  171.     cp -p $(DIST_FILES) ctags-$*/
  172.     for file in $(VERSION_FILES) ;do \
  173.         rm -f ctags-$*/$${file} ;\
  174.         sed -e "s/@@VERSION@@/$*/" \
  175.             -e "s/@@LSMDATE@@/`date +'%d%b%y' | tr 'a-z' 'A-Z'`/" \
  176.             $${file} > ctags-$*/$${file} ;\
  177.     done
  178.     chmod 644 ctags-$*/*
  179.     chmod 755 ctags-$*/mkinstalldirs
  180.     (cd ctags-$*; autoheader; chmod 644 config.h.in)
  181.     (cd ctags-$*; autoconf; chmod 755 configure)
  182.     tar -zcf $@ ctags-$*
  183.  
  184. ctags-%.tar.Z: ctags-%.tar.gz
  185.     tar -Zcf $@ ctags-$*
  186.  
  187. vim-ctags-%.tar.gz: ctags-%.tar.gz
  188.     @ echo "---------- Building Vim tar ball"
  189.     if [ -d vim ] ;then rm -fr vim ;fi
  190.     mkdir -p vim
  191.     cp -pr ctags-$* vim/ctags
  192.     ( cd vim/ctags ;\
  193.       mv README README.txt ;\
  194.       rm COPYING QUOTES ;\
  195.       echo "You can obtain a copy of the GNU General Public License from the GNU web" >> COPYING ;\
  196.       echo "site at http://www.gnu.org/copyleft/gpl.html, or from the Exuberant Ctags" >> COPYING ;\
  197.       echo "web site at http://darren.hiebert.com/ctags/gpl.html, or by writing to" >> COPYING ;\
  198.       echo "the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston," >> COPYING ;\
  199.       echo "MA 02111-1307  USA" >> COPYING ;\
  200.       chmod 644 COPYING ;\
  201.     )
  202.     cd vim; tar -zcf ../$@ ctags
  203.  
  204. $(CTAGS_DOSDIR)/ctags%: FORCE
  205.     if [ -d $(CTAGS_DOSDIR)/ctags$* ] ;\
  206.         then rm -fr $(CTAGS_DOSDIR)/ctags$*/* ;\
  207.         else mkdir -p $(CTAGS_DOSDIR)/ctags$* ;\
  208.     fi
  209.  
  210. dos1-%: $(DOS_FILES)
  211.     for file in $^ ;do \
  212.         unix2dos $${file} $(CTAGS_DOSDIR)/ctags$*/$${file} ;\
  213.     done
  214.     mv $(CTAGS_DOSDIR)/ctags$*/Makefile.amiga \
  215.        $(CTAGS_DOSDIR)/ctags$*/Makefile.ami
  216.     cd $(CTAGS_DOSDIR); mv makefile makefile.bak; \
  217.         sed -e 's/^\(VERSION =\) [0-9]\+/\1 $*/' makefile.bak > makefile
  218.  
  219. dos2-%: $(VERSION_FILES) ctags.man
  220.     for file in $^ ;do \
  221.         rm -f $(CTAGS_DOSDIR)/ctags`echo $*|sed 's/\.//g'`/$${file} ;\
  222.         sed -e "s/@@VERSION@@/$*/" \
  223.             -e "s/@@LSMDATE@@/`date +'%d%b%y' | tr 'a-z' 'A-Z'`/" $${file} |\
  224.             unix2dos > $(CTAGS_DOSDIR)/ctags`echo $*|sed 's/\.//g'`/$${file} ;\
  225.     done
  226.  
  227. dos-%:
  228.     @ echo "---------- Building MSDOS release directory"
  229.     $(MAKE) $(CTAGS_DOSDIR)/ctags`echo $*|sed 's/\.//g'` \
  230.             dos1-`echo $*|sed 's/\.//g'` dos2-$*
  231.  
  232. rpm-%: ctags-%.tar.gz ctags.spec
  233.     @ echo "---------- Building RPM"
  234.     cp -p ctags-$*.tar.gz $(RPM_ROOT)/SOURCES/
  235.     sed -e "s/@@VERSION@@/$*/" ctags.spec > $(RPM_ROOT)/SPECS/ctags-$*.spec
  236.     (cd $(RPM_ROOT)/SPECS; rpm -ba ctags-$*.spec)
  237.     rm -fr $(RPM_ROOT)/BUILD/ctags-$*
  238.  
  239. ctags32-%: ctags-%.tar.gz
  240.     @ echo "---------- Building DPMS binary for MSDOS"
  241.     (cd ctags-$*; $(MAKE) -f ../Makefile ctags32.exe; mv ctags32.exe ..)
  242.     rm -f $(CTAGS_DOSDIR)/ctags32.exe
  243.     mcopy ctags32.exe $(CTAGS_DOSDIR)
  244.  
  245. #
  246. # Prevent make from deleting these automatically
  247. #
  248. .PRECIOUS: ctags-%.tar.gz ctags-%.tar.Z vim-ctags-%.tar.gz
  249.  
  250. cleanrelease-%:
  251.     rm -f ctags-$*.tar.gz vim-ctags-$*.tar.gz
  252.     rm -fr ctags-$*
  253.     rm -fr $(CTAGS_DOSDIR)/ctags`echo $*|sed 's/\.//g'`
  254.     rm -f $(RPM_ROOT)/SOURCES/ctags-$*.tar.gz
  255.     rm -f $(RPM_ROOT)/RPMS/i386/ctags-$*-1.i386.rpm
  256.     rm -f $(RPM_ROOT)/SRPMS/ctags-$*-1.src.rpm
  257.     rm -f $(RPM_ROOT)/SPECS/ctags-$*.spec
  258.  
  259. release-%: ctags-%.tar.gz ctags-%.tar.Z vim-ctags-%.tar.gz dos-% rpm-% ctags32-%
  260.     @ echo "---------- Copying files to web archive"
  261.     cp -p ctags-$*.tar.* $(WEB_ARCHIVE_DIR)
  262.     cp -p $(RPM_ROOT)/RPMS/i386/ctags-$*-1.i386.rpm $(WEB_ARCHIVE_DIR)
  263.     cp -p $(RPM_ROOT)/SRPMS/ctags-$*-1.src.rpm $(WEB_ARCHIVE_DIR)
  264.     cp -p ctags-$*/ctags.lsm $(WEB_ARCHIVE_DIR)/ctags-$*.lsm
  265.     chmod o+r $(WEB_ARCHIVE_DIR)/*
  266.     @ echo "---------- Release $* completed"
  267.  
  268. #
  269. # Dependency file generation
  270. #
  271. $(DEP_DIR)/%.d: %.c Makefile.maint
  272.     @ if [ ! -d $(DEP_DIR) ] ;then mkdir -p $(DEP_DIR) ;fi
  273.     @ $(CC) -M $(DCFLAGS) $< | sed 's/\($*\.o\)\([ :]\)/\1 $*.od $(@F)\2/g' > $@
  274.  
  275.  
  276. %.inc: %.c Makefile
  277.     -@ $(CC) -MM $(DCFLAGS) $<
  278.  
  279. #
  280. # Compilation rules
  281. #
  282. %.o : %.c $(DEP_DIR)/%.d
  283.     @ echo "-- Compiling $*.c"
  284.     @ $(CC) $(CFLAGS) -DEXTERNAL_SORT $(OPT) $(WARNINGS) -Wuninitialized -O -c $<  $(REDIR)
  285.  
  286. %.od : %.c $(DEP_DIR)/%.d
  287.     @ echo "-- Compiling (debug) $*.c"
  288.     @ $(CC) -g $(DCFLAGS) $(WARNINGS) -o $*.od -c $<  $(REDIR)
  289.  
  290. %.i : %.c $(DEP_DIR)/%.d FORCE
  291.     $(CC) $(DCFLAGS) $(WARNINGS) -Wuninitialized -O -E $< > $@ $(REDIR)
  292.  
  293. %.ic : %.c $(DEP_DIR)/%.d FORCE
  294.     $(CC) $(DCFLAGS) $(WARNINGS)